<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>

  <body>
    <script>
      // 改变this指向；

      function fn(a, b, c) {
        console.log(this, a, b, c);
      }
      // fn(1,2);
      // 1.call  改变this指向；
      // let obj = {
      //     name:"张三"
      // }
      // fn.call(obj,3,4);

      // 2.apply: 改变this指向； 函数的参数接收的是一个数组；
      // let obj = {
      //     name:"王五"
      // }
      // fn.apply(obj,[5,6]);

      function fn1() {
        let obj = {
          name: "王五",
        };
        fn.apply(obj, arguments);
        // fn.call(obj,...arguments);
      }

      fn1(1, 2, 3);

      // 3.bind；需要执行2次；
      //   add(1)(2)(3);
      //   let obj = {
      //     name: "王小二",
      //   };
      //   fn.bind(obj)(3, 2, 1);

      //   总结： 1.call 2.apply 3.bind
    </script>
  </body>
</html>
